<?php
namespace Index\Controller;
use Think\Controller;
//CommonController类，写入权限控制，读取SESSION中的username，如果有，则判断是登录用户，有权限浏览，否则提示请先登录，所有需要权限的控制器方法，继承这个CommonController类
//因为这是个父类控制器，里面写的公共方法都是给它的子类控制器内部调用的，所以方法名不用加Action后缀。
class CommonController extends Controller {
    //TP框架的自动加载构造函数，写成_initialize
    public function _initialize()
    {
    	$this->getCategorys();//调用方法
    	//组合访问路径，模块，控制器，方法,strtolower全部转化成小写，$url接到外部传过去的路径，去config配置里查询是否是需要权限的页面，如果是，则无法访问，不是，则可以访问
    	$url = strtolower(MODULE_NAME).'/'.strtolower(CONTROLLER_NAME).'/'.strtolower(ACTION_NAME);
        // var_dump($url);
    	//判断权限，需要权限访问的控制器方法写入前端Index文件夹下面的config配置的数组中，继承CommonController类，判断需要加权限的页面是否在配置数据文件中有，如果有，那么就需要权限才能访问该页面，提示登录。
    	if(in_array($url, C('AUTH_INDEX'))){
    		if(!isset($_SESSION['username'])){
	    		$this->error('你还没有登录，请先登录',U('index/login/index'));
	    	}
	    }
    }
    //内部方法，内部调用，不加Action
    public function getCategorys()
    {
    	//分类菜单并不经常需要更新查询，可以设置成缓存，并设置缓存时间，用户需要查询的时候，直接读取缓存里的数据，更节约资源，
    	//判断缓存是否存在，如果存在，就把数据分配给assign方法处理，'categorys'变量，S('categorys')变量值，不存在，就去数据库查询，取数据，处理数据

    	if (S('categorys')) {
    		$this->assign('categorys',S('categorys'));
    	}else{
    		//查询数据，获取分类
    		$sql = "select * from category";
    		$categorys = M()->query($sql);
    		//S方法设置缓存，60秒是缓存时间
    		S('categorys',$categorys,60);
    		$this->assign('categorys',S('categorys'));
    	}
    }

    //自增方法，设置字段filed可以实现相应自增功能，比如浏览量刷新，字段设置成浏览量，每次用户浏览页面，浏览量加1，$table(表名),$filed(字段),$id(id)
    public function autoadd($table,$filed,$id){
        $sql = "update {$table} set {$filed} = {$filed}+1 where id = '{$id}'";
        M()->execute($sql);
    }


}

